/**
 * 项目介绍：thinknode
 * 
 * 采用:
 *       异步网络编程,具有具有高并发，高可靠行,自建常驻内存的session机制,拜托传统session 文件读取，mvc设计模式，
 *       nunjucks 模板引擎,简洁高效,具有高并发高可靠性
 * 
 * 
 * 项目预览:
 * 
 * 网站目录结构：
 * 
 *      没有固定模式，但尽可能规整
 * 
 *      untils:工具类目录
 * 
 *      home:前端
 *          controller
 *          css
 *          imgs
 *          views
 * 
 *      admin:后端
 *          controller
 *          css
 *          imgs
 *          views
 * 
 *      config:配置文件
 *          db.js
 * 
 *      app.js 入口文件
 * 
 * 什么是mvc：首先mvc 是一种设计模式,不限语言，回顾计算机基础知识：计算机如何工作，cpu 指挥 硬盘等文件操作，
 * 
 *      mvc 也类似，c 表示业务的指挥者，controller ,model 就好比计算机中的其余各个模块，听从 cpu的指挥
 * 
 *  
 * 
 * 
 * 
 *      
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 *      
 * 
 *       
 * 
 * 
 * 
 * 
 * 
 * 
 *   
 */

let http = require('http');

let mysql = require('mysql');

let fs = require('fs');


http.createServer(function(req,res){

    //mvc 引入之前显示代码
    //具体以疫情数据为例子
    //数据库中有 situation 数据库，有表 china 字段 id ，city  nums date
    if(req.url=='/china'){
        res.setHeader('Content-Type', 'text/html; charset=utf-8');
        /**数据库操作 */
        let connection = mysql.createConnection({host:'localhost',user:'root',password:'root',port:'3306',database:'situation'});

        connection.connect();

        connection.query("select * from china where `date`=?",'2022-03-10',function(err,rows){
            /**
             * 解析查询的数据,格式化到html元素中
             * 
             * 
             */
            //console.log(arguments);
            
            let html=''
            for(let row in rows){
                   html+='<tr>'
                   html+='<td>'+ rows[row].city+'</td>'
                   html+='<td>'+ rows[row].nums+'</td>'
                   html+='<td>'+ rows[row].date+'</td>'
                   html+='</tr>'
            }            
            console.log(html);
            fs.readFile('./china.html',function(err,buffer){

                 let outPutStr = buffer.toString();
                 //替换掉{{result}}标签
                let newStr= outPutStr.replace('{{result}}',html);
                res.write(newStr);
                res.end();

            });  

        });




    }else{
        res.end();
    }

   
    


}).listen(8080)

